<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /**
     * try-catch 用于语法异常，错误有name、message两个属性
     * throw 处理逻辑异常
     *
     * js中的错误
     * Error   --- 常规错误，其他类型都继承它
     * ReferenceError   ---   引用错误（引用了未知变量等）
     * SyntaxError   ---   语法错误（）
     * TypeError   ---  类型错误（不是一个function等）
     * RangeError   ---  范围错误（如：Maximum call stack exceeded）
     * EvalError   ---   eval()函数而发生异常时被抛出
     * URIError
     */

    function play(){
        try {
            console.log('hello')
            console.log(3 / 0) // Infinity  不会出现异常的
            let arr = [1, 2, 3]
            console.log(arr[3]) // undefined

           let k = "100"
            if(k === "") throw "是空的"
            if(isNaN(k)) throw "不是数字"
            if(Number(k) < 5) throw " 太小了"
            else throw "太大了"
        } catch (err) {
            console.log(err)
        } finally {
            console.log('finally:无论是否出现异常，我都会执行')
        }
    }

    play()

</script>
</body>
</html>
